This invention relates to a method and apparatus for optimizing recovery from defects in a data channel that uses iterative decoding.
In many applications, data—e.g., on a communication channel or in the read channel of a data storage device—is encoded using an outer code. Examples of such codes include turbo codes, Low-Density Parity Check (LDPC) codes, and convolutional codes. Encoded data from an outer code are often interleaved before being transmitted over a data channel. In that data channel, the signal might become corrupted with noise or defects. On the receiver side, the received signal can be decoded using an iterative decoding principle often referred to as turbo decoding. A feature of turbo decoding is that decoding includes multiple stages, each of which includes a detection/equalization block and an outer decoder block. For example, the signal from a detector front end, which may be a finite impulse response (FIR) filter, may be processed by a soft detector—such as a Soft Output Viterbi Algorithm (SOYA) or a Bahl-Cocke-Jelinek-Raviv (BCJR) detector—that operates on branch metrics computed from the FIR signal.
The soft detector provides two outputs—(i) hard decisions for the detected signal and (ii) extrinsic log-likelihood ratios (LLRs), which indicate new reliability information generated by the detector for each of the hard decisions. These LLRs are then de-interleaved and passed to the outer decoder for further processing. The outer soft decoder then provides its own hard decisions as well as new extrinsic LLRs. These LLRs from the outer decoder are then passed to the soft detector as a priori LLRs after interleaving. In the next round of iterative decoding, the soft detector generates new extrinsic LLRs, taking both the a priori LLRs and the FIR signal as inputs. For the first iteration, the a priori LLR inputs to the soft detector are all set to zero. This iterative decoding between soft detector and the outer decoder is carried out until a maximum number of iterations are reached, or a valid code word is found. In the case of an LDPC code, interleaving is inherently embedded inside the LDPC code and hence a separate interleaver and de-interleaver are not required. Iterations can be stopped at the detector or the decoder output.
There are many well-known methods for dealing with channel noise. However, channel defects—i.e., data corruption of a magnitude much greater than noise—must be dealt with differently. In the presence of a channel defect, the FIR signal at the input of the detector is corrupted and thus hard decisions provided by the detector are not reliable and are often in error. A corrupted FIR signal may also cause error propagation to the bits adjacent to the defect location in detector hard decisions. These errors can further propagate in iterative decoding through unreliable extrinsic LLRs at the defect location.
It therefore would be desirable to be able to provide more reliable defect recovery for an iteratively-decoded channel.